Pengertian ggplot2

ggplot2 adalah paket visualisasi data yang sangat populer di R, dikembangkan oleh Hadley Wickham. Paket ini didasarkan pada konsep “Grammar of Graphics”, yang memberikan kerangka kerja sistematis untuk membuat grafik. Dengan pendekatan ini, pengguna dapat membangun visualisasi data secara bertahap, dimulai dari pemetaan data hingga pengaturan estetika dan elemen tambahan. Fitur ini membuat ggplot2 sangat intuitif dan powerful untuk berbagai kebutuhan analisis data.

Salah satu fitur utama ggplot2 adalah pemisahan antara data dan elemen estetika. Anda dapat memulai dengan data mentah, kemudian menambahkan lapisan (layers) untuk mengatur tampilan, seperti warna, ukuran, dan bentuk, sesuai kebutuhan. Dengan pendekatan ini, ggplot2 memungkinkan fleksibilitas tinggi dalam membuat grafik yang sederhana hingga kompleks, seperti scatter plot, bar chart, line chart, hingga grafik yang lebih spesifik seperti heatmap.

Selain itu, ggplot2 mendukung integrasi dengan paket lain untuk memperluas fungsionalitasnya. Misalnya, pengguna dapat menggunakan ggthemes untuk menambahkan tema khusus atau ggplotly untuk membuat grafik interaktif. Dengan fitur ini, ggplot2 menjadi alat yang tidak hanya cocok untuk eksplorasi data tetapi juga untuk pembuatan laporan dan presentasi visual yang profesional.

Dasar-Dasar ggplot

dasar-dasar ggplot2 di R adalah bahwa ggplot2 adalah paket visualisasi data yang kuat dan fleksibel, yang memungkinkan pembuatan berbagai jenis grafik dengan cara yang terstruktur dan mudah dimengerti. Dengan pendekatan Grammar of Graphics, ggplot2 memungkinkan pengguna untuk:

  1. Membuat berbagai jenis grafik: Seperti scatter plot, bar plot, histogram, box plot, dan lainnya, hanya dengan menambahkan geometri yang sesuai (misalnya, geom_point() untuk scatter plot, geom_bar() untuk bar plot).

  2. Kontrol penuh atas estetika: Pengguna dapat mengatur elemen-elemen grafis seperti warna, ukuran, dan bentuk titik, serta menggunakan facet untuk membagi plot berdasarkan kategori tertentu, memberikan wawasan yang lebih mendalam.

  3. Menambahkan label dan tema: Dengan fungsi labs() dan theme(), pengguna dapat menyesuaikan label sumbu, judul, dan elemen estetika lainnya, serta memilih tema yang sesuai untuk tampilan yang lebih baik.

  4. Interaktivitas dan Pembagian Grafik: Dengan kemampuan facet_wrap() dan facet_grid(), ggplot2 memungkinkan pembagian plot menjadi sub-grafik berdasarkan kategori, serta visualisasi data secara lebih komprehensif.

  5. Menyimpan dan Berbagi Plot: Pengguna dapat dengan mudah menyimpan plot dalam berbagai format file seperti PNG, PDF, atau JPEG untuk berbagi dan presentasi.

    Secara keseluruhan, ggplot2 adalah alat visualisasi yang sangat bermanfaat bagi siapa saja yang bekerja dengan data di R, memberikan cara yang intuitif dan efisien untuk mengungkap pola dan hubungan dalam data.

suppressPackageStartupMessages({
  library(ggplot2)
  library(gganimate)
  library(htmltools)
  library(htmlwidgets)
  library(plotly)
  library(gifski)
  library(readr)
  library(readxl)
  
  Datavis <- read_excel("Datavis.xlsx")
})

library(ggplot2):untuk membuat visualisasi data, seperti grafik dan plot.

library(gganimate):untuk membuat animasi dari visualisasi ggplot2.

library(htmltools):untuk membuat dan memanipulasi konten HTML, biasanya untuk visualisasi interaktif.

library(htmlwidgets):untuk membuat visualisasi interaktif berbasis JavaScript dalam R.

library(plotly):untuk membuat visualisasi data interaktif, baik untuk grafik 2D maupun 3D.

library(gifski):untuk membuat animasi GIF dari serangkaian gambar.

library(readr):untuk membaca file teks, seperti CSV, dengan cara yang lebih efisien.

library(readxl): Memuat paket readxl yang digunakan untuk membaca file Excel (.xls dan .xlsx).

Gerafik pola Titik

data <- data.frame(x = rnorm(100), y = rnorm(100), grup = sample(c("A","B","C","D"), 100, replace = TRUE))
ggplot(data, aes(x = x, y = y, color = grup)) +
  geom_point() +
  facet_wrap(~ grup) +
  scale_color_manual(values = c("A" = "blue", "B" = "red", "C" = "yellow", "D" = "yellow")) +
  theme_minimal()

Kode ini menghasilkan visualisasi data dalam bentuk scatter plot (grafik titik) menggunakan paket ggplot2 di R. Data yang digunakan berupa dua variabel acak yang terdistribusi normal (x dan y) dan satu variabel kategori (grup) yang terdiri dari 4 kategori (“A”, “B”, “C”, “D”). Berikut adalah beberapa elemen penting dari visualisasi yang dihasilkan:

  1. Titik (Scatter Plot): Masing-masing titik mewakili pasangan nilai x dan y dari data acak, yang dipetakan di sumbu X dan Y.

  2. Pembagian Berdasarkan Kategori: Grafik dibagi menjadi empat sub-grafik menggunakan facet_wrap, berdasarkan variabel grup, sehingga setiap grup memiliki tampilan grafisnya sendiri-sendiri.

  3. Warna Kustom untuk Setiap Grup: Setiap kategori dalam variabel grup diberi warna yang berbeda, dengan warna biru untuk grup “A”, merah untuk grup “B”, dan kuning untuk grup “C” dan “D”.

  4. Tema Minimal: Tema minimal diterapkan untuk menghasilkan grafik yang lebih bersih, tanpa tlemen visual yang berlebihan.

Secara keseluruhan, kode ini bertujuan untuk memvisualisasikan distribusi dan pola hubungan antara dua variabel numerik yang dibedakan berdasarkan kategori, dengan penggunaan warna dan sub-grafik untuk membandingkan data secara lebih jelas.

Grafik Univariat

# membuat Plot sederhana dan mengubah backgroundnya dengan plot.background dan panel.background
ggplot(Datavis,aes(x=Angka_Harapan_Hidup))+geom_histogram(binwidth=3,fill="purple",color="green",alpha=0.8)+labs(title="Sebaran Angka Harapan Hidup",x="Angka Harapan Hidup",y="Angka")+theme(
  plot.background = element_rect(fill="green"),
  panel.background = element_rect(fill="black")
)

Kode ini menghasilkan histogram yang menggambarkan distribusi Angka Harapan Hidup dalam data Datavis, dengan penyesuaian tampilan visual berupa perubahan warna latar belakang plot dan panel. Histogram ini memiliki warna batang ungu dengan garis pinggir hijau, dan menggunakan tema dengan latar belakang hijau untuk plot secara keseluruhan dan hitam untuk area plot histogram.

Grafik Multivariat

  • Scatter Plot : Warna & Ukuran
# Membuat plot dan menambahkan warna dan ukuran yang berbeda setiap kategori dengan parameter color & size
ggplot(Datavis,aes(x=Pendapatan_per_kapita,y=Angka_Harapan_Hidup))+geom_point(aes(color=Benua,size=Populasi))+labs(title="Pendapatan Per Kapita & Angka Harapan Hidup",x="Pendapatan Per Kapita",y="Angka Harapan Hidup",color="Benua",size="Populasi")+theme(
  plot.background = element_rect(fill="green"),
  panel.background = element_rect(fill="#222831")
)

Fungsi dari kode tersebut adalah untuk membuat scatter plot yang menampilkan hubungan antara dua variabel: Pendapatan per Kapita (Pendapatan_per_kapita) dan Angka Harapan Hidup (Angka_Harapan_Hidup), sambil menambahkan elemen visual yang membedakan titik berdasarkan Benua dan Populasi. Berikut adalah penjelasan rinci tentang setiap bagian kode:

Grafik Multi Fariat faceted

  • Scatter Plot : Faceted
# Membuat Plot dan memisahkan Benua menggunakan facet_wrap()
ggplot(Datavis,aes(x=Pendapatan_per_kapita,y=Angka_Harapan_Hidup))+geom_point(aes(color=Benua,size=Jumlah_anak-1),alpha=0.7)+facet_wrap(~Benua)+labs(title="Pendapatan Per Kapita & Angka Harapan Hidup",x="Pendapatan Per Kapita",y="Angka Harapan Hidup",color="Warna",size="Populasi")+theme(
  plot.background = element_rect(fill="green"),
  panel.background = element_rect(fill="#222831")
)

K ode ini membuat scatter plot untuk memvisualisasikan hubungan antara Pendapatan per Kapita dan Angka Harapan Hidup menggunakan data dari Datavis. Grafik ini memiliki beberapa fitur utama:

  1. Scatter Plot: Setiap titik menggambarkan hubungan antara Pendapatan per Kapita (sumbu X) dan Angka Harapan Hidup (sumbu Y), dengan Benua sebagai variabel yang mempengaruhi warna titik, dan Jumlah anak mempengaruhi ukuran titik.

  2. Facet Grid (facet_wrap): Plot dibagi menjadi beberapa sub-grafik berdasarkan Benua, sehingga memungkinkan untuk membandingkan pola Pendapatan per Kapita dan Angka Harapan Hidup antara berbagai benua secara lebih jelas.

  3. Penyesuaian Visual:

  • Warna dan Ukuran Titik: Titik diberi warna yang berbeda sesuai dengan Benua, dan ukurannya disesuaikan dengan Jumlah anak.
  • Latar Belakang: Latar belakang plot diubah menjadi hijau untuk keseluruhan plot dan gelap untuk area di sekitar titik-titik untuk memberikan kontras yang lebih baik dan tampilan yang lebih menarik. Secara keseluruhan, kode ini memberikan visualisasi yang jelas mengenai hubungan antar variabel, dengan pembagian yang memudahkan perbandingan antar benua, serta menggunakan elemen visual (warna dan ukuran) untuk menambah informasi dalam plot.

Grafik Multi Fariat Faceted animated

  • Scatter Plot : Faceted (Animated)
# Membuat Plot
plot <- ggplot(Datavis,aes(x=Pendapatan_per_kapita,y=Angka_Harapan_Hidup))+geom_point(aes(color=Benua,size=Jumlah_anak-1),alpha=0.7)+facet_wrap(~Benua)+labs(title="Pendapatan Per Kapita & Angka Harapan Hidup",x="Pendapatan Per Kapita",y="Angka Harapan Hidup",color="Warna",size="Populasi")+theme(
  plot.background = element_rect(fill="green"),
  panel.background = element_rect(fill="#222831")
)

# Menambahkan parameter tranisition kedalam plot
animated_plot <- plot+transition_time(Tahun)+ease_aes("linear")+labs(subtitle = paste("Tahun : {scales::label_number()(frame_time)}"))

# Merender dan menyimpan plot animasi ke dalam format .gif dengan gifski
animate(animated_plot,nframes=15,renderer=gifski_renderer("animated_scatter_plot_faceted.gif"))

kode ini menghasilkan scatter plot animasi yang faceted untuk memvisualisasikan hubungan antara Pendapatan per Kapita dan Angka Harapan Hidup berdasarkan Benua dan Tahun.

Rincian utama

  1. Scatter Plot:

    • Grafik ini menunjukkan hubungan antara Pendapatan per Kapita (sumbu X) dan Angka Harapan Hidup (sumbu Y).
    • Titik-titik diberi warna berdasarkan Benua dan ukuran berdasarkan Jumlah anak, dengan transparansi untuk meningkatkan visibilitas.
  2. Faceting:

    • Plot dibagi menjadi sub-grafik terpisah untuk masing-masing Benua, sehingga memungkinkan perbandingan antar benua secara visual.
  3. Animasi:

    • transition_time(Tahun) mengubah plot menjadi animasi, dengan tiap frame mewakili data pada tahun tertentu.
    • Animasi ini menunjukkan bagaimana hubungan antara Pendapatan per Kapita dan Angka Harapan Hidup berubah dari tahun ke tahun.
    • Animasi memiliki transisi linier untuk perubahan yang halus.
  4. Simpan sebagai GIF:

    • Hasil animasi disimpan dalam format GIF sehingga dapat dengan mudah diputar dan dibagikan.

Secara keseluruhan, kode ini menciptakan visualisasi dinamis yang memungkinkan untuk memantau perubahan data seiring waktu, dengan membaginya berdasarkan kategori Benua dan memberikan gambaran yang lebih menarik dan informatif.

Grafik Interaktif

  • Bubble Plot : Interaktif (Plotly)
# Membuat Plot
plot <- plot_ly(Datavis, x = ~Pendapatan_per_kapita, y = ~Angka_Harapan_Hidup, z = ~Populasi, type = "scatter3d", mode = "markers", size = 1,color=~Benua) %>%
  layout(title = "3D Scatter Plot",
         scene = list(xaxis = list(title = "Pendapatan per Kapita"),
                      yaxis = list(title = "Angka Harapan Hidup"),
                      zaxis = list(title = "Populasi")))

# Menampilkan plot
print(plot)
plot_browsable <- browsable(plot)
plot_browsable
# Menggunakan widget html
htmlwidgets::saveWidget(as_widget(plot), "3d_scatter_plot.html")

kode tersebut menghasilkan 3D bubble plot interaktif menggunakan Plotly di R, yang memungkinkan pengguna untuk mengeksplorasi hubungan antara tiga variabel: Pendapatan per Kapita, Angka Harapan Hidup, dan Populasi. Plot ini dibedakan berdasarkan Benua, dengan kemampuan interaksi seperti memutar, zoom, dan hover untuk melihat nilai data secara lebih mendalam.

Fitur utama yang disediakan:

  1. Visualisasi 3D: Menampilkan data dalam ruang tiga dimensi (sumbu X, Y, dan Z), dengan titik-titik yang menggambarkan nilai dari tiga variabel.
  2. Interaktivitas: Pengguna dapat berinteraksi langsung dengan grafik melalui browser, memungkinkan rotasi, zoom, dan melihat detail data saat melakukan hover pada titik.
  3. Penyimpanan sebagai HTML: Plot disimpan dalam format HTML, yang memungkinkan untuk diakses dan dijelajahi secara interaktif di browser kapan saja.

Secara keseluruhan, kode ini mempermudah visualisasi dan eksplorasi data dalam format 3D yang dinamis, memberikan pemahaman yang lebih baik tentang hubungan antar variabel dan memudahkan presentasi data yang lebih menarik dan informatif.